package la.iok.hzsvn.lewin.movie.service;

import la.iok.hzsvn.lewin.movie.core.Token;
import la.iok.hzsvn.lewin.movie.entity.HolidayConfig;
import la.iok.hzsvn.lewin.mybatis.service.BaseService;

import java.util.List;

public interface HolidayConfigService extends BaseService<HolidayConfig, Long> {
    /**
     * 保存日期的假期配置
     * @param date 日期,格式为yyyy-MM-dd
     * @param type 是否假期,0：工作日,1：假期
     * @return 记录的id.如果存在对应日期,则更新配置并返回已经存在的对象id
     */
    Long save(Token token, String date, Integer type);

    /**
     * 查询假期配置。以天查询或者以月查询或者以年查询。如2023表示查询2023年的假期配置，2023-02表示查询2023年2月的假期配置，
     * 2023-02-05表示查询2023年2月5日的假期配置
     * @param token 操作用户
     * @param time 配置时间。如2023或者2023-02或者2023-02-05
     * @return 满足条件的假期配置信息。可能为空表示对应时间段内没有相应配置，或者部分配置，如一个月30天只配置了2号和18号的，那返回2条记录其他日期未配置
     */
    List<HolidayConfig> list(Token token,String time);

    /**
     * 查询假期配置。以天查询或者以月查询或者以年查询。如2023表示查询2023年的假期配置，2023-02表示查询2023年2月的假期配置，
     * 2023-02-05表示查询2023年2月5日的假期配置
     * @param time 配置时间。如2023或者2023-02或者2023-02-05
     * @return 满足条件的假期配置信息。可能为空表示对应时间段内没有相应配置，或者部分配置，如一个月30天只配置了2号和18号的，那返回2条记录其他日期未配置
     */
    List<HolidayConfig> list(String time);

    /**
     * 查询对应日期的假期配置
     * @param date 日期,格式为yyyy-MM-dd形式
     * @return 假期配置
     */
    HolidayConfig select(String date);
}
